Portable devices such as cellular telephones and personal digital assistants (PDAs) have become commonplace in today's society. Many of these portable devices are capable of receiving, loading, and running small software applications called application components. Due to portability and price constraints, however, these portable devices are designed using small and inexpensive hardware components, which limit the amount of system resources available within the portable device. The system resources include flash memory that is used for storing application components, and runtime system resources such as random access memory (RAM), threads, and sockets, that are used when application components are running.
An appealing aspect of these portable devices is that an operator of a portable device can choose the application components that will be available on the portable device. The operator can load and unload application components from the portable device, thereby permitting customization of the portable device by the operator and, in contrast to the typical operator of a desktop PC, this loading and unloading process for portable devices may occur with great frequency given the limited amount of flash memory available in the portable devices for storing application components.
In traditional portable devices, attempting to run several application components simultaneously can exhaust the available runtime system resources, thereby resulting in improper operation of the application components such as slow response times and error messages. For example, if a portable device has 8 MB of RAM available, a first application component running that is using 3 MB of RAM, and a second application component running that is using 5 MB of RAM, running a third application component that will attempt to use 1 MB of RAM may result in improper operation of all three application components.
In addition, application components for use with portable devices are available from a wide range of software developers ranging from well-known companies to unknown 3rd party vendors. Although application component development by a wide range of software developers benefits the operators of portable devices by increasing competition and selection, poorly designed application components, or application components intentionally designed to be destructive (e.g., viruses), can easily impair a portable device by exhausting the portable device's runtime system resources. For example, if a portable device has 8 MB of RAM available and a particular application component uses all 8 MB of RAM, the operator may be unable to run other application components simultaneously without experiencing improper operation of the running application components.
Accordingly, there is a need for improved resource-management methods, systems, and products which protect runtime system resources from poorly designed or destructive application components. The present invention fulfills this need among others.